package com.girant.logger.utils;


import java.util.Arrays;
import java.util.function.Function;

public class SearchUtil {

    public static String convertIpPrefixToCidr(String ipPrefix) {
        // 清理输入：移除末尾的点（如果存在）
        String cleanPrefix = ipPrefix.endsWith(".")
                ? ipPrefix.substring(0, ipPrefix.length() - 1)
                : ipPrefix;

        // 分割IP部分并计算掩码
        String[] parts = cleanPrefix.split("\\.");
        int maskBits = parts.length * 8;  // 每个.分隔的部分代表8位掩码


        // 补全IP为4段（不足部分用0填充）
        String fullIp = String.join(".", parts) +  //使用join将字符串用'.'拼接起来
                (parts.length < 4 ? ".0".repeat(4 - parts.length) : ""); //不足4位，补全.0 ,repeat表示重复次数
        return fullIp + "/" + maskBits;
    }

    public static <T> String getEnumLabel(T[] enums, String targetCode,
                                   Function<T, String> codeGetter,
                                   Function<T, String> labelGetter) {
        if (targetCode == null) {
            return ""; // 避免空指针
        }

        return Arrays.stream(enums)
                .filter(enumItem -> targetCode.equals(codeGetter.apply(enumItem))) // 匹配code
                .findFirst()
                .map(labelGetter) // 提取label
                .orElse(""); // 无匹配时返回空
    }
}
